import java.io.File;

public class RenameFilesToUpperCase {
    public static void main(String[] args) {
        // 指定目标文件夹路径
        String folderPath = "C:\\Users\\Administrator\\Desktop\\支付接入\\ico\\online\\支付方式图标-20240523(1)\\Circular_144x144"; // 替换为你的目标文件夹路径
        File folder = new File(folderPath);

        if (!folder.exists() || !folder.isDirectory()) {
            System.out.println("指定的路径不是有效的文件夹！");
            return;
        }

        // 调用方法递归处理文件夹
        renameFilesToUpperCase(folder);
        System.out.println("所有文件名已修改为大写（后缀名保持不变）！");
    }

    private static void renameFilesToUpperCase(File folder) {
        // 获取文件夹下的所有文件和子文件夹
        File[] files = folder.listFiles();

        if (files == null || files.length == 0) {
            return; // 文件夹为空，直接返回
        }

        for (File file : files) {
            if (file.isDirectory()) {
                // 如果是文件夹，递归处理
                renameFilesToUpperCase(file);
            } else {
                // 如果是文件，修改主文件名为大写，后缀名保持不变
                String parentPath = file.getParent(); // 获取父目录路径
                String fileName = file.getName(); // 获取文件名
                int dotIndex = fileName.lastIndexOf("."); // 找到最后一个点的位置

                if (dotIndex > 0) {
                    // 分离主文件名和后缀名
                    String baseName = fileName.substring(0, dotIndex).toUpperCase(); // 主文件名改为大写
                    String extension = fileName.substring(dotIndex); // 保留后缀名
                    File renamedFile = new File(parentPath, baseName + extension);

                    // 重命名文件
                    if (!file.renameTo(renamedFile)) {
                        System.out.println("重命名失败: " + file.getAbsolutePath());
                    }
                } else {
                    // 没有后缀名的文件，直接改为大写
                    File renamedFile = new File(parentPath, fileName.toUpperCase());

                    // 重命名文件
                    if (!file.renameTo(renamedFile)) {
                        System.out.println("重命名失败: " + file.getAbsolutePath());
                    }
                }
            }
        }

        // 修改当前文件夹名为大写（可选）
        String parentPath = folder.getParent();
        if (parentPath != null) {
            String newFolderName = folder.getName().toUpperCase();
            File renamedFolder = new File(parentPath, newFolderName);

            if (!folder.renameTo(renamedFolder)) {
                System.out.println("文件夹重命名失败: " + folder.getAbsolutePath());
            }
        }
    }
}
